﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace PlanInterfejs
{
    public partial class GrupyControl : UserControl
    {
        PlanView _view;

        public PlanView View
        {
            get { return _view; }
            set { _view = value; }
        }
        public GrupyControl()
        {
            InitializeComponent();
        }

        List<Grupa> listaGrup;

        void UpdateLbGrupy()
        {
            var grupy =
                from x in DAL.database.Grupa
                select x;

            listaGrup = new List<Grupa>();

            lbGrupy.Items.Clear();
            foreach (Grupa grupa in grupy)
            {
                string str = grupa.Nazwa;
                grupa.NauczycielReference.Load();
                str = grupa.Poziom_grupy + grupa.Nazwa.ToUpper() + " (wychowawca: " + 
                    grupa.Nauczyciel.Imie + " " + grupa.Nauczyciel.Nazwisko + ")";               

                lbGrupy.Items.Add(str);
                listaGrup.Add(grupa);
            }
        }

        struct ExtNauczyciel
        {
            public Nauczyciel n {get; set;}
            public string imie { get; set; }
            public string nazwisko { get; set; }
            public string imieINazwisko {get; set;}
        }

        int KomparujExtNauczycieli(ExtNauczyciel s1, ExtNauczyciel s2)
        {
            string konkat1 = (s1.nazwisko + s1.imie).ToLower();
            string konkat2 = (s2.nazwisko + s2.imie).ToLower();
            return String.Compare(konkat1, konkat2);
        }

        void UpdateCbWychowawca()
        {
            List<ExtNauczyciel> nauczyciele = new List<ExtNauczyciel>();
            var res = DAL.database.Nauczyciel.Select(p => p);

            foreach (Nauczyciel na in res)
            {
                nauczyciele.Add(new ExtNauczyciel { n = na, imie = na.Imie, nazwisko = na.Nazwisko,
                    imieINazwisko = na.Imie + " " + na.Nazwisko });
            }

            nauczyciele.Sort(KomparujExtNauczycieli);
            

            cbWychowawca.DataSource = nauczyciele;
            cbWychowawca.DisplayMember = "imieINazwisko";
        }

        private void GrupyControl_VisibleChanged(object sender, EventArgs e)
        {
            UpdateLbGrupy();
            UpdateCbWychowawca();
            cbPoziom.SelectedIndex = 0;
        }

        private void btnDodaj_Click(object sender, EventArgs e)
        {
            Grupa nowaGrupa = new Grupa();
            nowaGrupa.Poziom_grupy = int.Parse((string)cbPoziom.SelectedItem);
            nowaGrupa.Nazwa = tbGrupa.Text;
            nowaGrupa.Nauczyciel = ((ExtNauczyciel)cbWychowawca.SelectedValue).n;

            DAL.database.AddToGrupa(nowaGrupa);
            DAL.database.SaveChanges();
            UpdateLbGrupy();
            lbGrupy.SelectedIndex = lbGrupy.Items.Count - 1;

            tbGrupa.Text = "";
            cbPoziom.SelectedIndex = 0;
            cbWychowawca.SelectedIndex = 0;
        }

        private void btnUsun_Click(object sender, EventArgs e)
        {
            DAL.database.DeleteObject(listaGrup[lbGrupy.SelectedIndex]);
            DAL.database.SaveChanges();
            UpdateLbGrupy();
        }

        private void lbGrupy_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

    }
}
